- 博客(15)
- 收藏
- 关注
原创 多平台统一消息系统
rpush:多平台统一消息系统一个接口触达多平台,支持一个接口多平台同时发送消息平台逻辑与业务逻辑的解耦,业务方不需要关心各个平台的对接实现,只需要关心:要用哪些平台发、要发给对应平台的哪些人、要发什么内容极强的扩展性,要新增一个消息平台的支持,理论只需要新增几个类就能完成,且不需要写任何前端代码即可获得该平台对应的ui交互(包括:配置交互、接收人维护、web手动消息发送交互等)。当然支持web端手动发送消息当然也支持定时任务消息方案预设置提供即时通讯实现,且支持服务器横向扩展接收人导入
2021-05-06 01:41:11 2241
原创 如何不加事务也能做到同一个线程内使用同一个数据库连接?
如何不加事务也能做到同一个线程内使用同一个数据库连接?这个问题一般在使用数据库的临时表的时候会碰到。mysql的临时表是直接“挂在”数据库连接(即connection)上的,这就意味着如果不是同一个数据库connection,对应的临时表就会不存在,强行使用会直接报错。所以解决这个问题的唯一的出发点就是“要保证同一个线程内反复和数据库交互都是同一个数据库连接”。既然涉及“同一线程”,那ThreadLocal肯定跑不了(Spring的声明式事务也是用ThreaLocal做的)。现在就是在哪里用Threa
2021-06-29 21:04:04 1003
原创 RocketMQ
安装 https://www.jianshu.com/p/0e7dad0bed0e启动后会显示ppending output to nohup.out,具体是否成功,要去看nohup.out文件里的内容。如果看到这样的东西ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!,在bin目录里找到这三个文件runserver.sh,runserver.sh,tools.sh,把这三个文件里的这.
2020-06-02 15:27:20 241
原创 类加载过程
类加载过程:加载通过类的全限定名加载类的二进制字节流将字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存生成一个代表这个类的Class对象,用来做访问方法区对应这个类的各种数据的入口验证为了确保加载进来的Class文件的字节流符合虚拟机的要求,防止威胁虚拟机的安全准备为类变量分配内存并设置初始值,因为是类变量,所以这些变量都会在方法区分配,要注意的是初始值...
2019-05-18 16:42:56 113
原创 关于Java的String类的intern方法
在jdk1.6,intern的实现是,将首次遇到的字符串复制一份到方法区中,并返回指向方法区的新字符串的引用在jdk1.7和jdk1.8,intern的实现就不是复制一份实例了,而是把首次遇到的字符串的引用放入方法区中以下引用深入理解Java虚拟机里的一个例子 String str1 = new StringBuilder("计算机").append("软件").toString()...
2019-05-12 18:28:03 323
原创 Java线程池
###核心参数核心线程池最大值:默认情况下,线程池里的线程数为0,当有任务的时候,会创建线程,线程数量大于核心线程池大小会把线程放入缓存队列。线程池最大线程数:决定了最多能创建多少个线程没有任务的线程的存活时间:默认情况下只有线程数量大于核心线程池的时候才会起作用单位TimeUnit,即存活时间的单位阻塞队列:用来存储等待执行的任务拒绝策略:默认是AbortPolicy即拒绝任务并抛...
2019-04-28 19:08:36 212
原创 关于Java多线程
关于Java多线程线程状态新建状态(NEW)。当线程被new出来的时候的状态为新建状态就绪状态(RUNNABLE)。当线程准备就绪,即调用start方法之后为就绪状态运行状态(RUNNING)。当线程拿到cpu执行权已经开始执行的状态为运行状态,注意,运行状态只能从就绪状态进入阻塞状态。调用sleep方法或者有io方法阻塞,这种阻塞只是暂停线程,并不会放弃cpu执行权。具体在ap...
2019-04-16 22:42:35 109
原创 ThreadLocal为什么会有内存泄露问题?
ThreadLocal为什么会有内存泄露问题?Thread(当前线程)持有Map<ThreadLocal, Object>,而Map对ThreadLocal的引用是弱引用,如果在线程中途ThreadLocal没有其它的强引用,那这个ThreadLocal对象随时会因为触发gc而被回收,被回收意味着这个ThreadLocal已经没有用了,即意味着这个ThreadLocal在这个线程对应...
2019-04-08 11:36:25 811
原创 Java io
####Java ionio不需要阻塞nio因为使用buffer导致编码变得更复杂连接数量庞大并且发送的都是小体量的数据使用nio更合适bio,nio,aio的区别bio同步阻塞,nio同步非阻塞,aio异步非阻塞解释:同步异步和阻塞非阻塞先用现实生活的例子说明:现在要做“去银行取钱”这件事,我自己去取是同步,我让小弟帮我取是异步。取的时候,到窗口排队等着是阻塞,取个号坐着...
2019-02-26 15:52:18 92
原创 数据库注意事项
数据库注意事项主要就是6点: 1. 必须考虑业务唯一性并建复合唯一索引 2. 所有字段尽量设置为not null 3. 区分度低的字段不要建索引 4. 逻辑外键要建索引 5. 用UUIDdelete_id varchar(32) NOT NULL DEFAULT ''做伪删除 6. 建议确定无负数的字段设置unsigned具体说明建表时必须考虑业务唯一性, 比如工单的...
2018-04-18 16:42:41 785
原创 MySQL 类型
varchar 和 charvarchar(4)和char(4)都表示只能存4个字节,中文或英文都是四个。char是定长,varchar是可变长度。比如如果char类型存’ab’,实际占用也是4个字节;varchar类型存‘ab’,实际占用是2个字节;所以varchar在存储空间占用角度更合理一些,char的查询效率会比varchar高;如果业务要求字段就是定长的,用char更合理,否则使...
2018-03-30 11:34:22 552
原创 HttpServletRequest的getParameter方法
HttpServletRequest的getParameter方法:tomcat或者其他的Servlet容器在调用程序员的Servlet之前已经帮我们做了很多事情了,比如解析HttpRequestLine(HTTP请求行)和解析HttpHeader(HTTP请求头)等等,但事实上在Servlet之前,服务器只解析到Header就停了,剩下的请求体留在request.getInputStream的流里
2017-09-25 13:05:21 40707 5
原创 springMVC 4.3.7 @RequestBody 报错415 Unsupported Media Type
springMVC 4.3.7 @RequestBody 报错415 Unsupported Media Type我的目的是希望用@RequestBody这个注解帮我实现把请求体里的application/json;charset=UTF-8 参数数据直接序列化成对象,所以我这样写controller @PostMapping(value = "/test", produces = "appl
2017-06-13 23:45:52 395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人