平时写代码用到的方法,就给封装了一下。需要的拿走不谢。。。

1.数组去重 并判断一个元素出现的次数
handle(str){
let arr=str.split('')
var newarr=[];
var obj={};
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){
newarr.push(arr[i]);
obj[arr[i]]=1;
}else{
obj[arr[i]]++;
}
}
console.log(obj);//{a: 3, b: 2, c: 1, d: 2, e: 1, …}
}
2.获取最小与最大时间的方法
getAll(value1, value2) {
var arr = [];
var getDate = function(str) {
var tempDate = new Date();
var list = str.split("-");
tempDate.setFullYear(list[0]);
tempDate.setMonth(list[1] - 1);
tempDate.setDate(list[2]);
return tempDate;
}
var date1 = getDate(value1);
var date2 = getDate(value2);
if(date1 > date2) {
var tempDate = date1;
date1 = date2;
date2 = tempDate;
}
date1.setDate(date1.getDate());
var dateArr = [];
var i = 0;
while(!(date1.getFullYear() === date2.getFullYear() &&
date1.getMonth() === date2.getMonth() && date1.getDate() === date2
.getDate())) {
var dayStr = date1.getDate().toString();
if(dayStr.length === 1) {
dayStr = "0" + dayStr;
}
dateArr[i] = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" +
dayStr;
date1.setDate(date1.getDate() + 1);
i++;
}
arr = dateArr;
arr.push(value2)
return arr;
}
3.数组扁平化
flat(arr){
var newArr =[];
for(var i= 0; i < arr.length; i++){
if(arr[i] instanceof Array){
newArr = newArr.concat(this.flat(arr[i]));
}else{
newArr.push(arr[i]);
}
}
return newArr;
} 4.时间戳转化成时间格式
timeFormat(timestamp){
var time = new Date(timestamp);
var year = time.getFullYear();
var month = time.getMonth()+1;
var date = time.getDate();
var day=time.getDay();
return year+'-'+this.add0(month)+'-'+this.add0(date)
}
add0(m){return m<10?'0'+m:m } 5.星期封装方法 返回星期几
GetWeek(num){
let b=num%7;
switch(b){
case 1:
return '周一'
case 2:
return '周二'
case 3:
return '周三'
case 4:
return '周四'
case 5:
return '周五'
case 6:
return '周六'
case 0:
return '周日'
default:
console.log('有误')
}
} 6.取最小值
Minarr(arr){
return Math.min(...arr);
} 7.取最大值
Maxarr(arr){
return Math.max(...arr);
}
8.如何用异步解决下面问题?
function getNextEvent(){
var event1=getNextKeyboarEvent();
var event2=getNextTouchEvent();
return event1 || event2
}
function getNextEvent(callback){
let timer=setInterval(function(){
let event=getNextKeyboarEvent() || getNextTouchEvent()
if (event) {
clearInterval(timer)
callback(event)
}
})
}
9.冒泡排序:依次对相邻的两个数据进行比较,大的放在后面,小的放在前面
function Arrp(arr){
var temp=0;
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr)
}
10.选择排序:将第一位的数据与后面的数据依次比较,得到最小值与第一位交换,第二位大的值再一次与后面的数据依次比较,进行排序。
function ArraySt(arr){
for(let i=0;i<arr.length-1;i++){
var min=arr[i];//假设第一位是最小值
var minIndex=i;//再拿到最小值时的索引
for(let j=i+1;j<arr.length;j++){
if(min>arr[j]){//假设失败 最小值大于了后一位的值
min=arr[j];//存储此时的最小值
minIndex=j;//存储此时最小值的索引
}
}
arr[minIndex]=arr[i];//再把第一位的数据放在第二位最小值的位置
arr[i]=min;//再把最小值放在第一位的位置
}
console.log(arr)
}
11.数组去重
function Setarr(arr){
var set = new Set(arr);
return set;
}
12.实现数据双向绑定
<body>
<div id="app">
<input type="text" id="txt">
<p id="show-txt"></p>
</div>
<script>
var obj = {}
Object.defineProperty(obj, 'txt', {
get: function () {
return obj
},
set: function (newValue) {
document.getElementById('txt').value = newValue
document.getElementById('show-txt').innerHTML = newValue
}
})
document.addEventListener('keyup', function (e) {
obj.txt = e.target.value
})
</script>
</body>
13.将数字金额每三位用逗号分隔
// * 功能:金额按千位逗号分隔
// * 参数:s,需要格式化的金额数值.
// * 参数:type,判断格式化后的金额是否需要小数位.
// * 返回:返回格式化后的数值字符串.
formatMoney(s, type) {
if (/[^0-9]/.test(s))
return "0.00";
if (s === null || s === "null" || s === "")
return "0.00";
s = s.toString().replace(/^(\d*)$/, "$1.");
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
s = s.replace(".", ",");
var re = /(\d)(\d{3},)/;
while (re.test(s))
s = s.replace(re, "$1,$2");
s = s.replace(/,(\d\d)$/, ".$1");
if (type === 0) {
var a = s.split(".");
if (a[1] === "00") {
s = a[0];
}
}
return s;
}
14.获取任意两日期内所有的月份
getMonthBetween(start, end) {
var result = [];
var s = start.split("-");
var e = end.split("-");
var min = new Date();
var max = new Date();
min.setFullYear(s[0], s[1]);
max.setFullYear(e[0], e[1]);
var curr = min;
while(curr <= max) {
var month = curr.getMonth()+1;
result.push(curr.getFullYear() + "-" + (month < 10 ? ("0" + month) : month));
curr.setMonth(month);
}
return result;
}
15.获取日期前天,昨天,今天,明天,后天...
GetDateStr(AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth()+1;//获取当前月份的日期
var d = dd.getDate();
return y+"-"+m+"-"+d;
} 16.url地址传递数据截取
var url="http:item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e";
function StrUrl(url){
let result={};
let a=url.split("?")[1];
let b=a.split("&");
for(let i=0;i<b.length;i++){
result[b[i].split("=")[0]]=b[i].split("=")[1]
}
return result;
}
17.函数防抖
HTML:
<button id='show'>抢购</button>
<div id="box">0</div>
JS:
let oBtn=document.getElementById('show');
let oBox=document.getElementById('box');
/*
handle:buy函数
wait:规定在一秒钟内只能执行一次
*/
function throttle (handle, wait) {
let lastTime = 0;
return function (e) {
let nowTime = new Date().getTime()
if (nowTime - lastTime > wait) {
handle.apply(this,arguments);
handle();
lastTime = nowTime;
}
}
}
function buy(e){
console.log(this,e)
oBox.innerText = parseInt(oBox.innerText)+1
}
oBtn.onclick = throttle(buy, 1000)
18.函数节流
HTML:
<input type='text' id='ipt'/>
JS:
let oIpt = document.getElementById('ipt');
let time = null;
function debounce (handle, delay) {
let time = null;
return function () {
let self = this,arg = arguments;
clearTimeout(time);
time = setTimeout(function () {
handle.apply(self,arg);
},delay)
}
}
function ajax (e) {
console.log(e,this.value)
}
oIpt.oninput = debounce(ajax, 1000)
19.数据随机
arr.sort(function randomsort(a, b) { // 数据随机
return Math.random() > .5 ? -1 : 1;
});
20.多行文本溢出显示省略号
overflow: hidden;
text-overflow:ellipsis;
display:-webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient:vertical;
21.在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。
let arr = [3,2,1,14,5,5,8,1,2,3,4,5,6,76,7,1,2,9];
function fn(arr){
let temp = [];
let sub = [];
for ( let i = 0; i < arr.length; i++ ){
if(arr[i]+1 === arr[i+1]){
temp.push(arr[i]);
}else{
if(temp.length!=0){
let temp1 = [];
temp.push(arr[i]); for( let i = 0 ; i < temp.length; i++){
temp1.push(temp[i])
} if(sub.length===0||sub.length<temp1.length){
sub = temp1
}
temp = [];
}
}
}
return sub;
}
let arr1 = fn(arr);
console.log(arr1); 22.字符中去掉汉字
function RemoveChinese(strValue) {
if(strValue!= null && strValue != ""){
var reg = /[\u4e00-\u9fa5]/g;
return strValue.replace(reg, "");
}
else
return "";
}
23.获取所有DOM子元素
function getDom(elem) {
var childArr = elem.children || elem.childNodes,
childArrTem = new Array();
for (var i = 0 ; i < childArr.length; i ++ ) {
if (childArr[i].nodeType == 1){
childArrTem.push(childArr[i]);
}
}
return childArrTem;
}
24.数组元素随机排序
function randomSort(a){
var arr = a,
random = [],
len = arr.length;
for (var i = 0; i < len; i++) {
var index = Math.floor(Math.random()*(len - i));
random.push(a[index]);
arr.splice(index,1);
}
return random;
} 25.要取一个小数的小数点后四位,有什么方法?
1 使用 Math.floor
var num = 3.141592653
var result = Math.floor (num * 10000) / 10000
2 当做字符串,使用正则匹配
var num = 3.141592653
var regex = /^\d+(?:\.\d{0,4})?/
var result = num.toString().match(regex)
3 通过四舍五入
var num = 3.141592653
var result = num.toFixed(4) //"3.1416" 26.如何全选checkbox表单,或者反选他们
//全选
$("#all").click(function(){
//获取所有的checkbox
var ches=$("input[type='checkbox']")
//遍历所有的checkbox,重设选中状态为选中
ches.each(function(){
$(this).prop("checked",true)
})
})
//反选
$("#unall").click(function(){
//获取所有的checkbox
var ches=$("input[type='checkbox']")
//遍历所有的checkbox,重设选中状态为不选中
ches.each(function(){
$(this).prop("checked",false)
})
}) 37.现在要做一个 类似 nav 或者 tab 的效果,点击一个元素的时候,让他高亮,他的同级元素则没有效果,用jQuery,代码应该是怎样的?
$('.mod-tab .tab').on('click',function(){
$(this).addClass('active') .siblings().removeClass('active')
} 38.select获取选项中的值和文本
<select id="test" name="">
<option value="1">text1</option>
<option value="2">text2</option>
</select>
<button id="my">获取</button>
---------------------------------------
$("#my").on("click",function () {
var textValue = $("#test option:selected");
console.log(textValue.val());//值
console.log(textValue.text());//文本
})
39. Demo案例
39.1)简单选项卡功能
https://www.cnblogs.com/qdclub/archive/2018/10/07/9750614.html
39.2)数组的方法
https://www.cnblogs.com/yyjbk/archive/2018/10/10/9764518.html
39.3).向指定元素添加事件的方法:addEventListener()方法
39.4).js实现动态分页
https://www.cnblogs.com/littleboyck/archive/2018/10/10/9769051.html
39.5).vue懒加载
https://www.cnblogs.com/huangenai/p/9736035.html
39.6).css基础
http://www.divcss5.com/rumen/r307.shtml
39.7).调拨打电话页面
<a href=”tel:15771791266 ”>拨打电话</a>
39.8).前端规范
https://www.cnblogs.com/xiaolingyan/p/9831740.html
39.9).移动端自适应
https://www.cnblogs.com/web1/p/9812669.html
40.0).异步async和await
https://www.cnblogs.com/SamWeb/p/8417940.html
40.1)常用类库汇总
http://react-china.org/t/topic/27278
40.2) fetch的详解
https://juejin.im/post/5c2c36626fb9a049b506eb94 40.锚点链接
$(document).ready(function () {
//点击触发事件
$("").click(function () {
$("html,body").animate({
scrollTop: $("").offset().top//跳转到的位置
}, {
duration: 400,//预定速度
easing: "swing",//动画效果.swing:在开头/结尾移动慢,在中间移动快;"linear": 匀速移动
});
}); }); 41.无线H5开放平台
http://h5.alibaba-inc.com/windvane/StandardEvent.html
41.1)Native 向 H5 发送事件
var btnHref;
container.find('a').each(function(item, i) {
$(item).on('click', function() {
btnHref = $(item).attr('href');
// console.log(btnHref)
if (window.WindVane && window.WindVane.isAvailable) {
var params = {
url: btnHref
};
window.WindVane.call('WVNative', 'openWindow', params, function(e) {
}, function(e) {
window.location.href = btnHref;
});
return false;
}
});
}); 42.Es7
1.Array.prototype.includes() 查找一个值是否在数组中,若在返回true,不在返回false
1.1 接收一个参数
['a', 'b', 'c'].includes('a') // true
['a', 'b', 'c'].includes('d') // false
1.2 接收两个参数
['a', 'b', 'c', 'd'].includes('b') // true
['a', 'b', 'c', 'd'].includes('b', 1) // true
['a', 'b', 'c', 'd'].includes('b', 2) // false 2.求幂运算符
2.1 基本用法
3 ** 2 //9 <==> Math.pow(3,2)
var b = 3; b **=2; b-->9
43.Es8
1.async await 异步函数async function()
2.生明方式
函数声明 : async function foo() {}
函数表达式: const foo = async function() {}
对象的方式: let obj = { async foo() {} }
箭头函数 : const foo = async () => {}
44.数组值为对象去重
setArr (arr) {
var result = [];
var obj = {};
for(var i =0; i<arr.length; i++){
if(!obj[arr[i].id]){
result.push(arr[i]);
obj[arr[i].id] = true;
}
}
return result;
} 45.数组值为对象去重
1.// 将对象元素转换成字符串以作比较
function obj2key(obj, keys) {
var n = keys.length,
key = [];
while (n--) {
key.push(obj[keys[n]]);
}
return key.join('|');
}
// 去重操作
function uniqeByKeys(array, keys) {
var arr = [];
var hash = {};
for (var i = 0, j = array.length; i < j; i++) {
var k = obj2key(array[i], keys);
if (!(k in hash)) {
hash[k] = true;
arr .push(array[i]);
}
}
return arr;
} newArr = uniqeByKeys(newArr, ['video_pic']); 2.
// 去重
removeRepeat: function(arr) {
let res = [];
let repeat = [];
for (var i = 0; i < arr.length; i++) {
var title = arr[i].itemTitle;
if (!repeat[title]) {
res.push(arr[i]);
repeat[title] = 1;
}
}
return res;
} 46.css实现圆柱
.ellipse{
position: absolute;
left: 0;
top: 20%;
width:100px;
height:100px;
border:solid 0.5px black;
background: deepskyblue;
border-radius: 50px;
transform: rotateX(70deg);//css3新属性
}
.ellipse:after{
content: '';
display:inline-block;
width:100px;
height: 140px;
position:relative;
opacity: 0.6;
background: deepskyblue;
top:50%;
left:-0.5px;
border-left:black 0.5px solid;
border-right:black 0.5px solid;
border-bottom: black 0.5px solid;
border-bottom-left-radius: 50px;//css3新属性
border-bottom-right-radius: 50px;
} 47.Object.getPrototypeOf()方法可以用来从子类上获取父类。 48. // 数据排序
newArr.sort(function(a, b) {
return a.video_price - b.video_price;
}); 49.z-index的取值范围
z-index的取值范围在-32767至32767之间 50.查看页面dom元素
document.getElementsByTagName('*').length 51.async await语法
51.1)async function basicDemo() {
let result = await Math.random();
console.log(result,'result');
}
basicDemo();
51.2)async
async function demo01() {
return 123;
}
demo01().then(val => {
console.log(val);// 123
});
若 async 定义的函数有返回值,return 123;相当于Promise.resolve(123),没有声明式的 return则相当于执行了Promise.resolve();
52.区分浏览器内核
function getBrowserInfo() {
var ua = navigator.userAgent.toLocaleLowerCase();
var browserType = null;
if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
browserType = "IE";
browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
alert('推荐使用谷歌浏览器打开')
} else if (ua.match(/firefox/) != null) {
browserType = "火狐";
} else if (ua.match(/ubrowser/) != null) {
browserType = "UC";
} else if (ua.match(/opera/) != null) {
browserType = "欧朋";
} else if (ua.match(/bidubrowser/) != null) {
browserType = "百度";
} else if (ua.match(/metasr/) != null) {
browserType = "搜狗";
} else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
browserType = "QQ";
} else if (ua.match(/maxthon/) != null) {
browserType = "遨游";
} else if (ua.match(/chrome/) != null) {
var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
function _mime(option, value) {
var mimeTypes = navigator.mimeTypes;
for (var mt in mimeTypes) {
if (mimeTypes[mt][option] == value) {
return true;
}
}
return false;
}
if (is360) {
browserType = '360';
} else {
browserType = '谷歌'
}
} else if (ua.match(/safari/) != null) {
browserType = "Safari";
}
console.log('当前浏览器: ' + browserType)
}
getBrowserInfo()
53.发出url请求并阻止
function stopDefault( e ) {
if ( e && e.preventDefault )
e.preventDefault();
else
window.event.returnValue = false;
return false;
}
var url = 'https://iwatch.cainiao-inc.com/iwatch/report/json/visit_record.json?url=https%3a%2f%2fi.cainiao-inc.com%2fcainiao-nplus%2fiknow_tms%2fiknow_tms_click_start&hostName=i.cainiao-inc.com&pathName=%2fcainiao-nplus%2fiknow_tms%2fiknow_tms_click_start&userName=' + inval;
stopDefault(e);
54.随机生成字符串
function randomString(n) {
let str = 'abcdefghijklmnopqrstuvwxyz9876543210';
let tmp = '',
i = 0,
l = str.length;
for (i = 0; i < n; i++) {
tmp += str.charAt(Math.floor(Math.random() * l));
}
return tmp;
}
55.反转一个整数 支持负数
const reverseInteger = function (number) {
var str = String(number)
if(str.length>9) return 0
if(str.charAt(0) == "-"){
var str_r = String(number).substr(1,str.length)
return parseInt("-"+str.split("").reverse().join(""))
} return parseInt(str.split("").reverse().join(""))
}
56.递归
function factorialize(num){
if(num < 0){
return -1;
}
if(num === 0 || num === 1){
return 1;
}
if(num >1){
return num * factorialize(num-1)
}
}
57.密码移位
function rot13(str) {
var new_arr=[];
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)<65||str.charCodeAt(i)>90){
new_arr.push(str.charAt(i));
}else if(str.charCodeAt(i)>77){
new_arr.push(String.fromCharCode(str.charCodeAt(i)-1));
}else{
new_arr.push(String.fromCharCode(str.charCodeAt(i)+1));
}
}
return new_arr.join("");
}
58.this指向
定义:this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象
总结:
1.在普通函数内部,this的指向是window
2.在方法内部,this的指向是方法的拥有者。
3.在箭头函数内部,this指向是创建箭头函数时所在的环境中的this指向的值。
4.在对象中,this指向当前对象
这里的this指向会发生改变
5.计时器中的this
6.回调函数中的this
7.事件处理函数中的this指向事件的绑定者
59.查找元素在数组中的位置
function indexOf(arr, item) {
if (Array.prototype.indexOf){ //判断当前浏览器是否支持
return arr.indexOf(item);
} else {
for (var i = 0; i < arr.length; i++){
if (arr[i] === item){
return i;
}
}
}
return -1; //总是把return -1暴漏在最外层
}

渡人如渡己,渡已,亦是渡当我们被误解时,会花很多时间去辩白。 但没有用,没人愿意听,大家习惯按自己的所闻、理解做出判别,每个人其实都很固执。与其努力且痛苦的试图扭转别人的评判,不如默默承受,给大家多一点时间和空间去了解。而我们省下辩解的功夫,去实现自身更久远的人生价值。其实,渡人如渡己,渡已,亦是渡人。

along.js的更多相关文章

  1. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  2. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  5. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  6. 利用snowfall.jquery.js实现爱心满屏飞

    小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...

  7. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  8. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  9. 干货分享:让你分分钟学会 JS 闭包

    闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

  10. JS核心系列:理解 new 的运行机制

    和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...

随机推荐

  1. 考试题T3

    题意分析 这题一看没有什么思路 幸好我们机房的红太阳\(ghj1222\)切了这道题 首先我们考虑风跑一个来回之后人怎么样 就是跑了一个区间 也就是风跑了若干个来回之后 人跑了若干个区间 所以我们考虑 ...

  2. js的window对象

    js的window对象 1.子窗口方法 function testOpen(){ window.open('son.html','newwindow','height=400, width=600, ...

  3. javascript如何阻止事件冒泡和默认行为

    阻止冒泡:    冒泡简单的举例来说,儿子知道了一个秘密消息,它告诉了爸爸,爸爸知道了又告诉了爷爷,一级级传递从而以引起事件的混乱,而阻止冒泡就是不让儿子告诉爸爸,爸爸自然不会告诉爷爷.下面的demo ...

  4. 无比迅速敏捷地开发iOS超精美控件

    目录 前言 设计 编码 PaintCode 前言 自从人生第一篇博客<iOS中的预编译指令的初步探究>问世以来 浏览量竟然达到了360多,(路过的大神勿笑!)这些浏览量使我兴奋异常但又令我 ...

  5. 4. C++11非受限联合体

    在C/C++中,联合体是一种构造类型的数据结构.在一个联合体内,我们可以定义多种不同的数据类型,这些数据类型共享相同的内存空间,可以达到节省内存空间的目的. 1. 取消数据类型的限制 在C++98中, ...

  6. Mac下使用Wine安装Xshell 4和Xftp 4

    下载: (链接: https://pan.baidu.com/s/1o78qisM 密码: 79sq) 安装: 1.安装Wine 参考:http://www.cnblogs.com/EasonJim/ ...

  7. 终于解决了贴吧手机版的一个重大BUG

    终于解决了贴吧手机版的一个重大BUG 别诧异虽然同一个域名,但是,PC 和手机打开完全不一样的体验 http://tieba.yunxunmi.com/ 吃点夜校准备做梦去!! 发现 我云贴吧 一个  ...

  8. Java调用C函数

    一.关于JNI JNI( Java Native Interface )主要是实现Java和C/C++语言之间的通信. Java通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOW ...

  9. Hibernate中Query.list()方法报IllegalArgumentException异常

    最近在使用Hibernate开发项目,在写好hql语句,并初始化Query对象,执行Query.list()方法时,应用报IllegalArgumentException异常.经网上查询,现已经基本决 ...

  10. hibernate多对多单向关联

    多对多单向,一个学生可以有多个老师,一个老师也可以教多个学生.老师可以找到他的学生,学生找不到教他的老师. 老师类Teacher: package com.oracle.hibernate; impo ...