前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >freemarker

freemarker

作者头像
周杰伦本人
发布于 2023-10-12 06:16:57
发布于 2023-10-12 06:16:57
27900
代码可运行
举报
文章被收录于专栏:同步文章同步文章
运行总次数:0
代码可运行

freemarker

为什么用freemarker

商品详情信息频繁访问 jsp页面被频繁解析 加载起来太慢, 因此我们要把网页静态化。

什么是freemarker

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

目前企业中:主要用Freemarker做静态页面或是页面展示

Freemarker的语法和使用方法

把freemarker的jar包添加到工程中。

Maven工程添加依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.23</version>
</dependency>

原理就是用java文件和模板通过freemarker来生成html静态文件。

ftl文件和jsp文件差不多 就是有点语法稍微不同 ftl文件在jsp文件中改造。

student.ftl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
<head>
	<title>student</title>
</head>
<body>
	学生信息:<br>
	学号:${student.id}&nbsp;&nbsp;&nbsp;&nbsp;
	姓名:${student.name}&nbsp;&nbsp;&nbsp;&nbsp;
	年龄:${student.age}&nbsp;&nbsp;&nbsp;&nbsp;
	家庭住址:${student.address}<br>
	学生列表:
	<table border="1">
		<tr>
			<th>学号</th>
			<th>姓名</th>
			<th>年龄</th>
			<th>家庭住址</th>
		</tr>
		<#list students as stu>
		<#if stu_index % 2 ==0>
		<tr bgcolor="red">
		<#else>
		<tr bgcolor="green">
		</#if>
			<td>${stu_index}</td>
			<td>${stu.id}</td>
			<td>${stu.name}</td>
			<td>${stu.age}</td>
			<td>${stu.address}</td>
		</tr>
		</#list>
	</table>
	<!-- 可以使用?date ?time ?datetime ?string(partten)-->
	当前日期:${date?string("yyyy/MM/dd HH:mm:ss")}<br>
	null值的处理: ${val!"val的值为null"}<br>
	判断val的值是否为null<br>
	<#if val??>
	val中有内容
	<#else>
	val的值为null
	</#if>
	引用模板测试:<br>
	<#include "hello.ftl">
</body>
</html>

hello.ftl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
${hello}

java文件

student实体类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.e3mall.freemarker;

public class Student {

	private int id;
	private String name;
	private int age;
	private String address;
	
	
	public Student() {}
	
	public Student(int id, String name, int age, String address) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.address = address;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
	
}

测试类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.e3mall.freemarker;
import java.io.File;
import java.io.FileWriter;
import java.io.FilterWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class FreeMarkerTest {
	
	@Test
	public void testFreeMarker() throws Exception {
		
		//创建Configuration对象
		Configuration configuration = new Configuration(Configuration.getVersion());
		//设置模板文件
		configuration.setDirectoryForTemplateLoading(new File("D:/workspace/e3-item-web/src/main/webapp/WEB-INF/ftl"));
		//模板文件编码格式
		configuration.setDefaultEncoding("utf-8");
		//加载模板文件 创建模板对象
//		Template template = configuration.getTemplate("hello.ftl");
		Template template = configuration.getTemplate("student.ftl");
		//创建数据集
		Map data = new HashMap<>();
		data.put("hello", "hello freemarker!");
		//创建pojo对象
		Student student = new Student(1,"小明",18,"北京");
		data.put("student", student);
		List<Student> students = new ArrayList<>();
		students.add(new Student(1,"小明1",18,"北京"));
		students.add(new Student(2,"小明2",18,"北京"));
		students.add(new Student(3,"小明3",18,"北京"));
		students.add(new Student(4,"小明4",18,"北京"));
		students.add(new Student(5,"小明5",18,"北京"));
		students.add(new Student(6,"小明6",18,"北京"));
		students.add(new Student(7,"小明7",18,"北京"));
		data.put("students", students);
		//添加日期类型
		data.put("date", new Date());
		//null值的处理
		data.put("val", "123");
		//创建Writer对象 指定输出文件的路径和文件名
//		Writer out = new FileWriter(new File("D:/freemarkertest/hello.txt"));
		Writer out = new FileWriter(new File("D:/freemarkertest/student.html"));
		//生成静态页面
		template.process(data, out);
		//关闭流
		out.close();
		
	}
}

生成的html文件:

freemarker与spring整合:

springmvc.xml文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
         http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
	
	<!-- 加载配置文件 -->
	
	<context:property-placeholder location="classpath:conf/resource.properties" />
	<context:component-scan base-package="cn.e3mall.item.controller" />
	<mvc:annotation-driven />
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>
	<!-- 引用dubbo服务 -->
	<dubbo:application name="e3-item-web"/>
	<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181"/>	
	<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />
	
</beans>

web.xml文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>e3-item-web</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
	
	<!-- 解决post乱码 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<!-- springmvc的前端控制器 -->
	<servlet>
		<servlet-name>e3-item-web</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/*.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>e3-item-web</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
</web-app>

测试类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.e3mall.item.controller;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Configuration;
import freemarker.template.Template;

@Controller
public class HtmlGenController {
	
	@Autowired 
	private FreeMarkerConfigurer freeMarkerConfigurer;
	
	@RequestMapping("genhtml")
	@ResponseBody
	public String genHtml() throws Exception{
		Configuration configuration = freeMarkerConfigurer.getConfiguration();
		//加载模板对象
		Template template = configuration.getTemplate("hello.ftl");
		//创建数据集
		Map data = new HashMap<>();
		data.put("hello", 123456);
		Writer out = new FileWriter(new File("D:/freemarkertest/hello2.html"));
		template.process(data, out);
		out.close();
		return "OK";
	}
}

生产中:

在商品添加后发送消息 这边接收消息 因此我们需要配置ActiveMQ消息队列

我们需要改造商品详情页面的jsp页面,改成ftl文件 然后我们实现消息队列的MessageListener接口就可以生成指定目录下的静态文件 ,然后我们用Nginx访问html文件。

输出文件的名称:商品id+“.html”

输出文件的路径:工程外部的任意目录。

网页访问:使用nginx访问网页。在此方案下tomcat只有一个作用就是生成静态页面。

工程部署:可以把e3-item-web部署到多个服务器上。

生成静态页面的时机:商品添加后,生成静态页面。可以使用Activemq,订阅topic(商品添加)

applicationContext-activemq.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
	
	<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
	<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL" value="tcp://192.168.25.130:61616" />
	</bean>
	<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
	<bean id="connectionFactory"
		class="org.springframework.jms.connection.SingleConnectionFactory">
		<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
		<property name="targetConnectionFactory" ref="targetConnectionFactory" />
	</bean>
	<!--这个是主题目的地,一对多的 -->
	<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
		<constructor-arg value="itemAddTopic" />
	</bean>
	<!-- 监听商品添加消息 同步索引库 -->
	<bean id="htmlGenListener" class="cn.e3mall.item.listener.HtmlGenListener"/>
	<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="destination" ref="topicDestination" />
		<property name="messageListener" ref="htmlGenListener" />
	</bean>
</beans>

MessageListener接口实现类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.e3mall.item.listener;

import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfig;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import cn.e3mall.item.pojo.Item;
import cn.e3mall.pojo.TbItem;
import cn.e3mall.pojo.TbItemDesc;
import cn.e3mall.service.ItemService;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class HtmlGenListener implements MessageListener{

	@Autowired
	private ItemService itemService;
	@Autowired
	private FreeMarkerConfigurer freeMarkerConfigurer;
	@Value("${HTML_GEN_PATH}")
	private String HTML_GEN_PATH;
	
	@Override
	public void onMessage(Message message) {
		try {
			//创建模板
			//从消息中取商品id
			TextMessage textMessage = (TextMessage)message;
			String text = textMessage.getText();
			Long itemId = new Long(text);
			//等待事务提交
			Thread.sleep(1000);
			//根据商品id查询商品信息
			TbItem tbItem = itemService.geTbItemById(itemId);
			Item item = new Item(tbItem);
			//取商品描述信息
			TbItemDesc itemDesc = itemService.geTbItemDescById(itemId);
			Map data = new HashMap<>();
			data.put("item", item);
			data.put("itemDesc", itemDesc);
			//加载模板对象
			Configuration configuration = freeMarkerConfigurer.getConfiguration();
			Template template = configuration.getTemplate("item.ftl");
			//创建输出流 指定目录和文件名
			Writer out = new FileWriter(HTML_GEN_PATH+itemId+".html");
			//生成静态页面
			template.process(data, out);
			//关闭流
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

resource.properties

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#静态页面输出目录
HTML_GEN_PATH=D:/freemarkertest/item/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
超全!2020年互联网大厂薪资和职级一览
以 BAT 为代表的互联网大厂,一直是求职者眼中的香饽饽,“大厂经历”在国内就业环境中无异于一块金子招牌。
凯哥Java
2020/04/10
27.6K0
超全!2020年互联网大厂薪资和职级一览
美团旅行销售绩效系统研发实践
背景 O2O是目前互联网竞争最激烈的领域之一,其重要的业务特征是有大规模的线下业务团队,他们分布在五湖四海,直接服务着数以百万的商家,责任很重,管理的难度巨大。能否通过技术手段,打造高效的线下团队,是O2O公司的核心竞争力。 随着美团酒旅业务的快速增长,业务人员绩效的考核方案和激励政策呈现出多样化、复杂化的特点,对绩效计算实时性和准确性的要求也越来越高。原始的绩效计算流程,包括各战区目标下发、激励调整、数据校验等繁琐工作,需要投入大量的人力,准确性也无法得到保障。鉴于这种情况,以优化体验、提升效率、降低成本
美团技术团队
2018/03/29
1.6K5
美团旅行销售绩效系统研发实践
腾讯大举退出美团!
腾讯表示,将按合资格股东持有每10股股份获发1股美团B类普通股的基准,向股东以实物分派的方式宣派由本公司持有的约958,121,562股美团B类普通股的特别中期股息。
数据森麟
2023/01/08
4580
腾讯大举退出美团!
不升职还能加薪,美团5年首次职级大调整
美团于近日在内网发布全员信,通报最新的职级体系调整:从 2021 年初起,美团将实行新的”扁平职级,宽带薪酬”体系,原有的“M+P”双职级线、“1-2 至 3-3”等专业序列被取消,取而代之的是以“L+数字”命名的单职级线。
肉眼品世界
2020/11/11
1.1K0
不升职还能加薪,美团5年首次职级大调整
2021 年互联网大厂职级对应薪资一览表
声明:本文数据部分来自所涉公司官方微信公众号(如:字节范儿),部分来自脉脉各公司职言区,另有部分知乎网友整理内容。除官微数据外,其他内容均来自网络,我们整理于此供大家参考,如有错漏,欢迎指正。
@超人
2021/02/26
39.1K0
2021 年互联网大厂职级对应薪资一览表
财报说,阿里巴巴二季度减少9241人。。。
新粉请关注我的公众号 互联网巨头阿里巴巴公司发布了二季度财报,根据财报里面的信息,阿里巴巴二季度员工总人数减少了9241人,加上一季度减少的4375人,上半年时间,阿里巴巴的员工总人数减少了差不多1.3万人。 由于财报信息并不会披露这些减少的人里面有多少是被“毕业”的,有多少是新招的,有多少是主动离职的。所以我们也很难精确的估计出从今年年初开始的裁员,阿里巴巴具体裁掉了多少人。 但是,这不妨碍我们用1.3万作为一个估计的下限。最少,已经有1.3万人被“毕业”或者主动离职。考虑到目前整个经济形势的大环境下,我
用户1564362
2022/08/29
3010
财报说,阿里巴巴二季度减少9241人。。。
曾经一年有6个月在考核绩效,谷歌最终放弃使用了20多年的“内卷神器”OKR
谷歌希望减少绩效评估给员工带来的负担,因此决定将原来每年两次的绩效考核取消,改为全新的、每年一次的 GRAD 考核,希望以此减少文书工作量,并从影响力角度关注员工动向。
深度学习与Python
2022/06/11
3850
曾经一年有6个月在考核绩效,谷歌最终放弃使用了20多年的“内卷神器”OKR
谷歌弃用20多年的OKR,再创内卷神器?
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/05/23
3130
谷歌弃用20多年的OKR,再创内卷神器?
账上有30亿美元的美团为何要融资?或为应对阿里百度的联手夹击
据自媒体开柒爆料,美团点评已开启新一轮融资,此轮融资投前估值约为250亿美元,较2016年年初融资时的180亿美元估值高出近40%。 最有意思的是投资方,这一次融资领投方或为IDG,老虎基金参投,就是
罗超频道
2018/04/25
7180
账上有30亿美元的美团为何要融资?或为应对阿里百度的联手夹击
美团、支付宝,藩篱不再
互联网江湖瞬息万变,对于互联网企业而言,风云变幻、势力更迭已然成为了常态。因此,当移动互联网红利逐渐消退,各大互联网企业为了能够从激烈的竞争中突围而出,便纷纷开始不断拓宽自身边界,向其他领域进发,而这也让各企业之间的矛盾日益加深。
刘旷
2023/06/29
2250
沦落到“删库讨薪”,为什么程序员找到对的工作这么难?
假期余额不足,“金三银四”也即将来临,节后打算换工作的程序猿 / 媛们是不是开始坐不住了?但找工作是门学问,一不小心可能就蹉跎几年。不能连外网、配置其卡无比的电脑、上厕所都要计时、说好的出差变外派...... 此外,还有哪些“大坑”需要注意呢?
深度学习与Python
2022/03/23
3990
美团大佬连夜冲向ChatGPT风口!自带3.5亿进场,只有一个判断:必须参与
杨净 明敏 发自 凹非寺 量子位 | 公众号 QbitAI ChatGPT汹涌而来,国内互联网大佬们坐不住了。 早已退休归隐的原美团联合创始人王慧文,昨晚高调官宣入局AI: 不在意岗位、薪资和title,还要自掏腰包5000万美元,只求组队。 要知道在此之前,作为美团2号人物,王兴忠实战友,他早已实现财富自由,42岁退休时身家百亿。 如今眼见ChatGPT带来的变革,重新出山,以实践他的判断:必须参与。 而据量子位获悉,随着各方下场,大佬推进,各种大模型方面的人才,也已经开始洛阳纸贵了。 国内国外,Ch
量子位
2023/02/23
5300
美团大佬连夜冲向ChatGPT风口!自带3.5亿进场,只有一个判断:必须参与
如果美团可以赢得这场和抖音的地面战,后续将永无对手
2023年初,抖音本地生活全年GMV目标是1500亿元,约等于美团2021年到店酒旅成交额的一半。
春哥大魔王
2023/08/08
3580
如果美团可以赢得这场和抖音的地面战,后续将永无对手
美团向亚马逊和华为学习的“抗周期”方法论
在研究“产业互联网”的过程中,发现“抗周期”是所有产业发展过程中必须正视的核心问题。
庄帅
2019/10/25
3560
美团向亚马逊和华为学习的“抗周期”方法论
詹克团反攻比特大陆:一场失去人心的自我挽留
作者 | 江小渔 责编 | Aholiab 来源 | 碳链价值 出品 | 区块链大本营(ID:blockchain_camp) 在吴忌寒重掌比特大陆大权后,这家全球最大矿机公司的创始人之战仍未平息。 去年10月,在投资人和公司员工的支持下,吴忌寒向詹克团发动了「政变」。10月28日,比特大陆的北京运营主体北京比特大陆科技有限公司(“北京比特”)法定代表人、执行董事均由詹克团变更为吴忌寒。10月29日,吴忌寒发布内部信,宣布解除詹克团在比特大陆的一切职务。 紧接着在11月,吴忌寒迅速召开股东大会,废除了詹克
区块链大本营
2023/03/31
1.9K0
詹克团反攻比特大陆:一场失去人心的自我挽留
俄罗斯绕过5G开发6G/ 苹果聘前兰博基尼高管造车/ 红杉中国减持美团...今日更多新鲜事在此
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是周四,一周又过去一大半了~ 今天科技圈都有哪些新鲜事儿呢? 一起来跟日报君看看吧。 今日大新闻 俄罗斯决定绕过5G直接开发6G网络 据俄媒《生意人报》消息,俄罗斯准备直接着手开发第六代(6G)通信标准和设备。 消息称,斯科尔科沃科学技术研究院和隶属于俄罗斯数字部的无线电制造科学研究所将负责这一项目,开发预算超过300亿卢布(约合人民币3.41亿元)。 这项工作将包括从原型到生产的设备开发、组件基础问题以及监管框架的开发和新网络的电磁安全
量子位
2022/08/26
3850
俄罗斯绕过5G开发6G/ 苹果聘前兰博基尼高管造车/ 红杉中国减持美团...今日更多新鲜事在此
“试一试”不靠谱,美团点评不能永远走在“试错”的路上
近几个月来,关于美团"缺钱"、"巨额亏损"、"估值遇冷"、"腾讯流量红利消失"等报道层出不穷。
曾响铃
2018/12/28
4290
“试一试”不靠谱,美团点评不能永远走在“试错”的路上
黑掉多家大公司,7名青少年被逮捕;消息称钉钉将上线“下班勿扰”功能​;Java 18 正式发布 | EA周报
腾讯控股发布2021年度第四季度及全年财报。财报显示,2021年第四季度,腾讯营收1442亿元,同比增长 8%,略低于市场预期的1453亿元,No-IFRS净利润248.8亿元,同比大 25%,连续第二个季度负增长,而且幅度扩大了23个百分点。全年No-IFRS净利润1237.88亿元,同比增长仅1%,创近十年来的最低值。在腾讯内部,马化腾曾和员工调侃起自己腰椎不好的老毛病,经过了一年时间的锻炼,拍了部腰的片子,结果和腾讯2020年的业绩一样「突出」。这一次,在腾讯内部社区里,马化腾再次拿自己的「腰」来做调侃:游了一年泳,又拍了片子,结果发现自己的腰椎间盘跟腾讯2021年的情况差不多——不那么突出了,甚至还少了一块儿。(快科技)
yuanyi928
2022/04/19
6840
伊利推出股权激励,潘刚再次吹响集结号
企业人才治理最重要的制度,最重要的制度是激励制度。如何激励员工?科技巨头走在前面,已上市公司大都有股权激励计划,最特立独行的是没有上市的华为:采取全员持股制度,每个符合条件的员工都可分享公司的成果,因此,华为员工是出了名的勇冠三军,华为的激励制度被业界称为“重赏之下必有勇夫”。
罗超频道
2019/08/12
4870
伊利推出股权激励,潘刚再次吹响集结号
互联网再无中年人
"裁员期间,很多企业前来摆摊招聘,但那些写在牌子上的岗位要求,看起来有点刺眼:32岁或35岁以下。
开发者技术前线
2020/11/23
4730
互联网再无中年人
推荐阅读
相关推荐
超全!2020年互联网大厂薪资和职级一览
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档