自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 考过的题(面前必看)

c++介绍下std_moveC++介绍下右值引用c++异常处理java与c++的区别java:垃圾回收机制java: 抽象类与接口和c++中接口和虚函数的区别,java可以多继承吗?手写uniq_ptr编程:一个矩阵全是加号从左上角走到右上角有几种方式?编程:求字符串中回文字符串个数...

2021-03-01 00:04:03 205

原创 wordpress迁移到Hostinger

Wordpress搬家很多同学还是比较喜欢使用All in one wp migration插件,确实快速方便,但是有个缺点就是免费版只能导入500M以内的网站文件,对于更大的文件就需要付费pro版本才可以导入。而Migrate Guru这款插件则是可以高速搬迁最大200GB的文件,且支持无流量限制的网站迁移,完美解决大站点的搬家难题。在将要迁移到的服务器添加新网站,例如hostinger添加新网站,hostinger仪表盘-websites-websites list。

2025-05-27 20:22:02 365

原创 手写翻译多个语言

在wp-content/themes/kadence/inc/template-functions/header-functions.php。

2025-05-13 18:31:42 106

原创 hz2新建Keyword页面

WordPress中使用了ACF创建了自定义产品分类products,现在想实现自定义产品分类下的文章使用特定的详情页,不使用single.php,如何实现?在自定义字段页面中找到与您的自定义产品文章类型相关联的自定义字段组。确保在您的分类模板文件taxonomy-products.php中,每篇文章标题都链接到对应的详情页。在这里,您可以看到字段组与特定的文章类型相关联。在这个模板文件中,您可以编写您想要显示的单个产品文章的详细内容和样式。在字段组编辑页面中,您将看到与您的自定义产品文章类型相关的字段。

2025-05-09 20:00:26 739

原创 hz修改后台新增keyword功能

【代码】hz修改后台新增keyword功能。

2025-04-24 19:05:42 340

原创 php获取IP国家和地址

【代码】php获取IP国家和地址。

2025-02-16 16:05:34 124

原创 学习新网站

2.Hub Core和Hub Elementor Addons是 Liquid Themes |的扩充插件,可以构建Liquid模板(页眉页脚)4.其中Liquid BlogList可以展示作品,甚至可以按照小分类目录展示大分类下部分作品。1.Rank Math SEO是新增SEO关键词的。5.而且还含有Form选项还可以直接展示表单。

2024-12-04 21:26:29 96

原创 从前往后学wp仿站+多语言翻译网站+代码级别翻译+手动翻译

两行js实现html全自动翻译。无需改动页面、无语言配置文件、无API Key、对SEO友好!以上三种是默认的,更多语言需要再引入多语言的包,加上下面代码即可。liquid插件的posts list可以按照目录筛选。translate.js,实现html页面的多语言。下面是我写的个小案例,你可以一键复制看看效果。ok,现在刷新网页看下,应该已经可以了。//是否显示select的选择语言框。//是否显示select的选择语言框。template插件。

2024-11-29 15:25:12 671

原创 基本数据类型长度 以及 int,long 类型占字节数相同原因

https://blog.csdn.net/l773575310/article/details/52913893

2021-04-09 20:28:04 351

原创 i++的线程安全问题

谁不安全?https://blog.csdn.net/huike_/article/details/78368852首先i++是不安全的,++i是安全的,这一点要从汇编角度去考虑:i++在函数压栈过程前:1,先取内存数据段i的值,存入一个临时量中;2,然后进行自加,再写入内存数据段的i中;3,等待所有参数运算完成后,最后压栈时,将保存的临时量的值进行压栈。++i在函数压栈过程前:1,直接取内存数据段的i值,进行自加,再写入内存数据段的i中;2,等待所有参数运算完成后,最后压栈时,直接取

2021-04-01 23:35:49 834 1

原创 Mac 配置Git分支显示

bash_profile里加上:# Git branch in prompt.function git_branch { branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`" if [ "${branch}" != "" ];then if [ "${branch}" = "(no branch)" ];then branch="(`git rev-parse --sh

2021-04-01 17:05:37 899

原创 golang string 转 int, int64, int32

str := “123”// string 转 inti, err := strconv.Atoi(str)if err == nil {  fmt.Printf(“i: %v\n”,i)}// string 转 int64i64,err := strconv.ParseInt(str,10,64)if err == nil {  fmt.Printf(“i64: %v\n”,i64)}// string 转 int32j,err := strconv.ParseInt(str,10

2021-03-30 19:13:16 2031

原创 第k大元素 & topk

// 堆排 void adjustHeap(vector<int>& nums, int i,int len){ int tmp = nums[i]; for(int k=2*i+1;k<len;k=k*2+1){ if(k+1<len && nums[k+1] > nums[k]){ k = k+1; } ..

2021-03-20 23:54:07 117

原创 反转链表的递归和非递归写法

很详细的一篇题解 //迭代 ListNode* reverseList(ListNode* head) { if(head == nullptr) return head; stack<ListNode*> s; ListNode *p = head; while(p->next){ s.push(p); cout<<p->val<<" "

2021-03-20 23:53:46 191

原创 Linux下的线程安全

Linux下的线程安全原文结构有点乱线程安全:多个执行流对临界资源进行争抢访问,而不会造成数据二义性和逻辑混乱,成这段代码的过程是线程安全的。实现:保证多个执行流对临界资源进行争抢访问不造成数据二义性。同步与互斥:同步:通过条件判断,实现对灵界资源访问的时序合理性。互斥:通过唯一访问,实现对临界资源的安全性。一、互斥实现的技术:互斥锁原理:保证同一时间只有一个执行流对临界资源进行访问。即:对临界资源进行标记,无访问时标记为1,有访问时标记为0,当标记为1时,则用户可访问或线程

2021-03-16 23:36:05 163

原创 路由器:网络层,交换机:数据链路层

交换机工作在OSI的第2层-数据链路层,路由器工作在OSI的第3层-网络层。交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,所以是在数据链路层工作。路由器是一种多端口设备,它可以连接不同传输速率并运行于各种环境的局域网和广域网,也可以采用不同的协议。路由器工作在OSI模型的第三层-网络层,指导从一个网段到另一个网段的数据传输,也能指导从一种网络向另

2021-03-16 23:26:55 2667

原创 volatile和synchronized的区别

volatile和synchronized的区别volatile和synchronized特点首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。 根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被s

2021-03-16 23:23:12 140

原创 mysql三大范式

第一范式(1NF)数据表的每一列都要保持它的原子特性,也就是列不能再被分割。这张表就不符合第一范式规定的原子性,不符合关系型数据库的基本要求,在关系型数据库中创建这个表的操作就不能成功。不得不将数据表设计为如下形式。第二范式(2NF)概念:属性必须完全依赖于主键。下面这张表不符合第二范式的要求。2.1 缺点表中的第一行数据都存储了系名、系主任,数据的冗余太大如果有一个新的系还没有开始找到学生,那么不能讲该系的信息添加到数据表中去,从数据表中看不到该系的存在如果将某个系的学生信息全部删

2021-03-16 23:15:50 173

原创 排序时间复杂度 & 快速排序 改进快排的方法

1、冒泡排序是一种用时间换空间的排序方法,n小时好2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级3、最好的情况是数据本来就有序,复杂度为O(n)1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。2、划分之后一边是一个,一边是n-1个,这种极端情况的时间复杂度就是O(N^2)3、最好的情况是每次都能均匀的划分序列,O(N*log2N)1、n大时好,归并比较占用内存,内存随n的...

2021-03-16 23:00:35 793

原创 linux io多路复用 & select & poll & epoll

什么是多路复用IO多路复用适用以下场合select、poll、epoll之间的区别深度理解select、poll和epoll

2021-03-12 23:00:34 133

原创 无锁队列的实现原理

https://blog.csdn.net/loulanyue_/article/details/96371584

2021-03-04 23:59:43 207 1

原创 std::forward完美转发(建议在std::move之后看)

参考https://blog.csdn.net/s11show_163/article/details/114296006一句话概括std::forward ———— 所谓的完美转发,是指std::forward会将输入的参数原封不动地传递到下一个函数中,这个“原封不动”指的是,如果输入的参数是左值,那么传递给下一个函数的参数的也是左值;如果输入的参数是右值,那么传递给下一个函数的参数的也是右值。一句话概括std::move ———— std::move是将对象的状态或者所有权从一个对象转移到另一.

2021-03-02 23:18:28 572

原创 std::move & 左值右值 &左值引用右值引用

一句话概括std::move ———— std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。好了,下面系统的讲右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的****临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升。

2021-03-02 22:58:20 2426 1

原创 30张图带你彻底理解红黑树

30张图带你彻底理解红黑树

2021-03-01 00:12:37 178

转载 java与c++区别

Java和C++的区别:1. Java源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。2. C++源码一次编译,直接在编译的过程中链接了,形成了机器码。3. C++比Java执行速度快,但是Java可以利用JVM跨平台。4. Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。5.&nbsp

2021-03-01 00:11:27 129

原创 java为什么不能多继承

作者:Charlie W链接:https://www.zhihu.com/question/24317891/answer/65289659来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。先举一个多重继承的例子,我们定义一个动物(类)既是狗(父类1)也是猫(父类2),两个父类都有“叫”这个方法。那么当我们调用“叫”这个方法时,它就不知道是狗叫还是猫叫了,这就是多重继承的冲突。而java对此的解决方法是,一个物体的本质只能有一个。一个动物只能是狗或只能是猫,如果你想创造一

2021-03-01 00:10:22 138

原创 java: 抽象类与接口和c++中接口和虚函数的区别,java可以多继承吗?

转自https://blog.csdn.net/weixin_36571185/article/details/89523514一、对比图表JAVAC++普通函数虚函数,用Virtual标识抽象函数abstract纯虚函数,用Virtual标识 ,且函数=0抽象类抽象类,和java概念一样interface接口纯虚类,所有的函数都是纯虚函数。纯虚函数和虚函数的区别在于前者不包含定义,而后者包含函数体。二、C++虚函数与JAVA中抽象函数比较1:j.

2021-03-01 00:08:46 498

原创 求字符串里回文字符串的个数

Given a string, your task is to count how many palindromic substrings in this string.The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.Example 1:Input: “abc”Output: 3Exp

2021-02-28 23:53:57 190

原创 java随笔——HashMap与红黑树

前言:hashmap是一种很常用的数据结构,其使用方便快捷,接下来笔者将给大家深入解析这个数据结构,让大家能在用的时候知其然,也知其所以然。一.Map首先,从最基本的讲起,我们先来认识一下map是个什么东西。在我们写程序的时候经常会遇到数据检索等操作,对于几百个数据的小程序而言,数据的存储方式或是检索策略没有太大影响,但对于大数据,效率就会差很远。我们来讨论一下这个问题。1.线性检索:线性检索是最为直白的方法,把所有数据都遍历一遍,然后找到你所需要的数据。其对应的数据结构就是数组,链表等线性结构,

2021-02-24 20:17:22 318

原创 后台面试经典问题-手写LRU算法

LRU,Least Recently Used,最近最久未使用。常用于页面置换算法。是为虚拟页式存储管理服务的。对于在内存中又不用的数据块,称为LRU,操作系统会根据哪些数据属于LRU而将其移出内存。对于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的的热点。而内存的虚拟存储管理,是现在最通用最常见的方式–在内存有限的情况下,扩展一部分外存作为虚拟内存。虚拟页式存储管理,则是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。对于页面置换算

2021-02-24 20:13:50 154

原创 HashMap和Hashtable的区别

http://www.cnblogs.com/lzrabbit/p/3721067.html#h1HashMap和Hashtable的区别两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个

2021-02-24 20:13:05 104

原创 go 学习笔记

Go的defer语句将函数调用( 延迟函数)计划为在执行defer返回的函数之前立即运行。这是处理异常情况的一种不寻常但有效的方法,例如无论函数返回哪个路径都必须释放资源。典型的例子是解锁互斥锁或关闭文件。package main//this function is main run.import ( "fmt" "awesomeProject1/morestrings")func trace(s string) { fmt.Println("entering:", s) }func

2021-02-22 11:34:56 80

原创 4种常用线程池介绍

一. 线程池简介线程池的概念:线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。线程池的工作机制2.1 在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,线程池在拿到任务后,就在内部寻找是否有空闲的线程,如果有,则将任务交给某个空闲的线程。2.1 一个

2021-02-08 18:48:43 139

原创 给前中后其中二序重构二叉树

摘自889题解:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/solution/kan-wo-jiu-gou-liao-san-chong-bian-li-fang-shi-gou/给前序+后序重构二叉树:LC889/** * Definition for a binary tree node. * struct TreeNode { * int.

2021-01-31 23:09:49 106

原创 c++ substr & substring

在c语言中,并没有出现substr或者substring方法。然而在1983,substr()方法已经出现在C++语言中了。然而这时候还没有出现substring, 所以可以见得:substr是stustring的老大哥string substr (size_t pos = 0, size_t len = npos) const;从C++的方法定义中可以看到, substr的参数是开始下标,以及字符串长度。 std::string str="We think in generalities, bu

2021-01-31 21:48:33 1039

原创 登录功能怎么短时间内重复登陆不用确认 & 异地登录

防止用户重复登陆+超时自动注销防止用户重复登陆Application,Session和Cookie/cache/hidden/Viewstate/字符串的区别

2021-01-31 21:21:49 232

原创 request & response & servlet

占坑这个比较全:https://www.cnblogs.com/alsf/p/9236668.html这个前半部分可以:https://www.cnblogs.com/MrzhangKk/p/5334296.htmlhttps://developer.aliyun.com/article/684250这个是servlet:https://www.runoob.com/servlet/servlet-intro.html...

2021-01-30 23:28:15 73

原创 深入线程Thread类的start()方法和run()方法

摘自:https://cloud.tencent.com/developer/article/1136459一、初识java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。.

2021-01-30 22:56:07 793

原创 java:List、Map、Set默认初始容量和扩容增量及加载因子 & 内存泄漏 & 线程安全

1.扩容加载因子的系数小于等于1,意指 即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容。eg:加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容Class初始大小加载因子扩容倍数底层实现是否线程安全同步方式ArrayList1011.5倍+1Object数组线程不安全-Vector1012倍Object数组线程安全synchronizedHashSet160.75f2倍HashMap&l

2021-01-30 21:19:20 1216 1

原创 孤儿进程 & 僵尸进程

摘自:https://www.cnblogs.com/anker/p/3271773.html1、前言之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程.

2021-01-30 20:15:07 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除