- 博客(90)
- 资源 (14)
- 收藏
- 关注
原创 读书心得二
一切事物都是客观中立的,让人摇摆不定的,是恐惧和希望。人和外界会建立关系,这种关系是绑定关系。一旦人和外界的某种绑定关系失衡,就会试图去和其他事物绑定,这种绑定也许是酗酒,也许是吸大麻,亦或是抑郁。驯化某人和被某人驯化,是幸福的,也是危险的。幸福是驯化后的习惯,危险是失去后的痛苦。
2022-10-16 21:43:58
614
1
原创 文章正确断开
public class TestFindNoWord { // 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!" // 已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。 // 假设文章用sentence表示.
2022-03-08 15:20:55
189
原创 系统优化随笔
1、http、https域名指定到nginx,nginx到内部服务器考虑用http,https消耗很大2、tomcat<Executor name="tomcatThreadPool" namePrefix="http-exec-" maxThreads="500" minSpareThreads="400" maxIdleTime="60000" prestar...
2021-12-30 21:00:12
136
原创 CompletableFuture
import com.google.common.collect.Lists;import java.util.List;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java...
2021-06-08 19:49:24
436
原创 2021-05-21
装饰器模式一层一层往外装饰,每一层都是内层的成员对象,先从内层再到外层一层一层修饰——计算结果。https://github.com/nickliuchao/decorator
2021-05-21 17:25:09
78
原创 springboot学习
https://jverson.com/spring-boot-demo/jdbc-orm/Spring-Data-JPA.html
2021-04-12 21:12:31
81
原创 springboot 动态读取配置文件
import org.springframework.boot.SpringApplication;import org.springframework.boot.env.EnvironmentPostProcessor;import org.springframework.core.env.ConfigurableEnvironment;import org.springframework.core.env.PropertiesPropertySource;import org.springf..
2021-04-09 17:57:13
1774
原创 并发——线程生命周期
线程生命周期初始状态,指的是线程已经被创建,但是还不允许分配CPU执行。这个状态属于编程语言特有的,不过这里所谓的被创建,仅仅是在编程语言层面被创建,而在操作系统层面,真正的线程还没有创建。 可运行状态,指的是线程可以分配CPU执行。在这种状态下,真正的操作系统线程已经被成功创建了,所以可以分配CPU执行。 当有空闲的CPU时,操作系统会将其分配给一个处于可运行状态的线程,被分配到CPU的线程的状态就转换成了运行状态。 运行状态的线程如果调用一个阻塞的API(例如以阻塞方式读文件)或者等待某个
2021-02-22 21:27:53
95
原创 并发——基础
可见性、原子性、有序性高并发是好事,通过缓存提升两端效率不一致(内存、cpu);通过线程切换,多人工作,提升效率;Java编译优化,会导致指令执行的无序。缓存导致了可见性问题——volatile线程切换导致了原子性问题——c+=1——一个或者多个操作在CPU执行的过程中不被中断的特性称为原子性指令重排导致了有序性问题——单例模式instance = new Singleton();...
2021-02-03 21:13:34
149
1
原创 秒杀——mysql优化思考
秒杀——高并发——使用mysql使用mysql,注意控制并发线程数,并发线程数达到一定数量,越多越慢——多在抢占锁。排队思想线程放入队列,控制并发线程数,减少锁冲突检测的时间——类比高速入口,排队>不排队。拿锁越晚越好,热点行语句放在所有事务语句最后。既然拿一次锁不容易,那么就多做事情,把要做的多个事情,本来要多个锁的,一个锁搞定,别忘了,最热点的操作,放最后...
2021-02-03 14:03:23
114
原创 并发——读写锁实现缓存
利用读写锁,完成缓存数据读写,减少db压力。import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteCache { // 锁 private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteL
2021-02-03 10:57:28
161
原创 mysql
事务mvcc(读)read committed版本链readview m_ids:[活跃事务]https://zhuanlan.zhihu.com/p/110263562repeatable read锁(写)select不加锁select *** lock in share modeselect *** for updaterepeatable readsql不走索引,写锁锁所有;逻辑架构1、查询缓存2、解析器3、预处理器4、查询.
2020-11-30 19:49:02
93
原创 sso初探cas
概念sso:single sign on多个系统中,登录单个系统,可访问其他互相信任系统问题点:1、产生存储信任凭据2、验证凭据方案同域:浏览器种cookie,服务器common session(redis、mysql)不同域:cas1、用户没登录,直接3022、重定向到cas server,但是没登录,展示登录页面3、验证成功,种下cas server域名cookie TGC,重定向原始请求地址,添加server ticket参数4、cas clie
2020-11-27 19:55:45
144
原创 高可用
海恩法则:大事都是小事积累导致的墨菲定律:不好的事,该发的一定会发生早发现、响应快发现:概率、范围、处理难度术设计AKF扩展术:x:服务无状态、水平复制;y:微服务拆分;z:地域拆分,分库分表隔离术:局部不影响全局容灾冗余术防缓存雪崩术:不同过期时间;定期刷新;多级缓存;加锁资源预防压测、故障演练、预案治理sop、风险巡检(日常)检测监控:日志、指标、trace定位排查修复上线复盘统一技术栈——》规范流程+止损手册+排查宝典——》标准.
2020-11-14 18:07:07
74
原创 ObjectMapper&Splitter
public class Test { public static void main(String[] args) throws IOException { testJson2Time();// testSplitter(); } /** * Splitter */ public static void testSplitter() { Splitter splitter = Splitter.on(.
2020-11-10 16:49:41
144
1
原创 读写锁缓存数据
public class LockTest { private static Map<String, Object> cacheMap = new HashMap<>(); private static ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public static void main(String[] args) { Object value = get.
2020-10-30 19:39:22
108
原创 IDEA操作快捷
command+1(数字) :Project栏control+shift+d :Debugcommand+f2 : 停止Debug、run跳转command+E : 最近文件command+shift+delete : 上次编辑位置(navigate + Last Edit Location)alt+command+<- : back(浏览)查找command+O(+O全部):classcommand+shift+O : filecommand+shift+f.
2020-10-26 21:08:29
158
原创 排序
1、快排public static void quickSort(int[] s, int l, int r){ if(l < r){ int i = l; int j = r; int tmp = s[l]; while(i < j){ while(i < j && s[j] >= tmp){ j--;
2020-08-10 10:46:20
117
原创 java规范
1、DO、BO、DTO、VO、AO、PO、UIDUserDO、HtmlDTO、TcpUdpDeal2、常量大写MAX_STOCK_COUNT、CACHE_EXPIRED_TIME3、包名单数,类名可复数4、常量、变量命名,名词在词尾startTime、nameList5、Service、DAO6、枚举以Enum后缀7、Service、DAO方法命名get、list、count、save/insert、remove/delete、update8、领域模型命名数据
2020-07-21 09:26:38
89
原创 springboot+ldaptemplate
maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-ldap</artifactId> </depe...
2020-02-29 21:31:16
1401
原创 linux日志统计
日志某接口每秒访问量grep 'add.json' XXX.log | awk '{print $2}' | cut -c 1-8 | sort|uniq -c|sort -nr|head -n 20
2020-02-12 17:48:04
176
1
原创 分布式锁
1、数据库conn.setAutoCommit(false);preparedStatement = conn.prepareStatement( "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );preparedStatement.execute();// todo 业务代码...
2019-12-26 15:05:16
122
原创 springboot多数据源
自定义数据配置@Slf4j@Configuration@MapperScan(basePackages = { "com.baidu.dal.demo"}, sqlSessionFactoryRef = "demoSqlSessionFactory")public class DemoDataSourceConfig { @Bean(name = "demoDataSourc...
2019-12-17 21:00:16
326
原创 restTemplate
httpClient创建HttpClients.createDefault()实际上也是调用HttpClientBuilder.create().build()。HttpClientConnectionManager一个HTTP连接在某一时刻只被一个线程使用。BasicHttpClientConnectionManager:每次只管理一个connection,一个线程调用。Po...
2019-12-16 17:02:29
409
原创 应用基本思路
1、多个module注意规范,自己用的对象,自己包内定义2、用户名、密码登录,密码用对称加密处理后传递,服务端解密,然后校验3、对外接口,设置访问限制,提供公共加密方法,调用方ID、加密后的秘文(调用方ID+调用方的密钥+调用方访问时间戳+调用方过期时间戳)、调用方访问时间戳、调用方过期时间戳;被调方确认调用方ID、秘文合法行,访问时间合法性:(当前时间戳>调用方给的过期时间戳|...
2019-12-13 15:22:17
119
原创 springboot1.5.9使用小结
最近,使用SpringBoot1.5.9搭建完成了个小项目,记录一下。一、项目整体搭建 <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifa...
2019-10-30 15:27:08
1769
原创 ZAB和Paxos算法的联系与区别
ZAB协议并不是Paxos算法的一个典型实现,两者联系两者都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行 Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交 在ZAB协议中,每个Proposal中都包含一个epoch值,用来代表当前Leader周期,在Paxos算法中,同样类似标识——Ballot在Paxos算法...
2019-10-08 15:44:06
744
原创 2PC&&3PC
2PC1、提交事务请求事务询问、执行事务(Undo Redo)、反馈响应2、执行事务请求发起请求、事务操作(提交 回滚)、反馈结果、完成同步阻塞:执行事务提交,各个参与者等待其他参与者响应,无法进行其他任何操作单点问题:协调者出现问题数据不一致:协调者执行事务请求发送消息,commit部分接收太过保守:协调者提交事务请求,参与者出现故障,依赖超时二阶段提交,容错...
2019-09-18 14:51:42
158
原创 分布式基本概念
CAPConsistency:一致性Availability:可用性Partition tolerance:分区容错性网络分区容错性保证的同时,权衡一致性和可用性BASEBasically Available:基本可用Soft state:软状态Eventually consistent:最终一致性因果一致性:Causal consistency读己之所写:...
2019-09-18 11:07:25
166
转载 JAVABEAN递归转MAP实现
public class ObjectToMap{ public static Map objectToMap(Object obj){ try{ Class type = obj.getClass(); Map returnMap = new HashMap(); BeanInfo bean...
2018-10-09 14:47:22
448
原创 spring 根据beanName获取bean对象,调用其方法
通用类@Componentpublic class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境...
2018-09-28 15:14:15
23398
原创 web性能随笔
1、吞吐率不是指单位时间内处理的数据量,而是请求数。影响服务器吞吐率的因素非常多,比如服务器的并发策略、I/O模型、I/O性能、CPU核数等,当然也包括应用程序本身的逻辑复杂度等。2、充分利用HTTP中的浏览器端Cache策略,减少重复下载。3、吞吐率随并发用户数变化:先增,充分利用,后减,直线下降。4、服务器平均请求处理时间随并发用户数变化:先不变,后直线上升。(用户等待时间同)5、阻塞和非阻塞...
2018-04-13 15:41:51
134
原创 mybatis Map<String,Object>params 传参 0 与 判断条件 !='' 问题
最近刚刚接触mybatis,遇到一个坑,记录一下。在调用mybatis的sqlSession对象传递参数,且参数类型为Map时,map.put('condition1',0)——情形1map.put('condition1','0')——情形2在配置文件中,test="condition1 != '' ">情形1下返回结果为false,即 0 与 '' 相等情形2下返回结果为true,即'0'与'
2018-01-18 10:59:50
6322
6
原创 div显示关闭图标
2010 .selectedctrl { border: 1px solid #add3e5; display: inline-block; height: 25px; line-height: 25px; margin-left: 15px; margin-top: 5px; margin-bottom: 5px; pa
2017-11-23 09:57:23
1342
原创 web js pdf
InputStream is = new FileInputStream(temp); // 在InputRepresentation中会关闭流 Disposition disposition = new Disposition(Disposition.TYPE_ATTACHMENT); // disposition.setFilename(URLEncoder.encode(bean
2017-10-16 15:38:32
299
原创 oracle blob过滤
private static String hexString = "0123456789ABCDEF"; private static String encode(String str) { try{ // 根据默认编码获取字节数组 byte[] bytes = str.getBytes("UTF-8"); StringBuilder sb = new StringBu
2017-09-30 10:14:49
401
原创 js分页
function initPagination(){ if(total == 0){ return; } var url = "./moreNews.jsp?type=" + type; var n = rows; var count = total; count = (count % n == 0) ? (count / n) : ((count / n) + 1); coun
2017-04-26 11:49:23
194
原创 文件下载文件名乱码处理
1、jsp文件 response.setContentType("application/x-download"); String filedisplay = bean.getATTACH_TITLE(); String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("
2017-04-21 16:10:19
1636
zookeeper.pptx
2020-08-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人